<?php
//Ultima verificacion: 08-03-2015
class DestinatariosNotificacion extends CI_Controller {
	//Metodo constructor de la clase
	function __construct(){
		parent::__construct();
		
		//Cargo el modelo donde estan los datos de los ciclos lectivos, curso, divisiones y turnos registrados
		$this->load->model('m_ciclo_lectivo');
		$this->load->model('m_curso');
		$this->load->model('m_division');
		$this->load->model('m_turno');
		
		//Cargo el modelo donde estan los datos de los alumnos, tutores, docentes, directivos y personas registradas
		$this->load->model('m_alumno');
		$this->load->model('m_tutor');
		$this->load->model('m_docente');
		$this->load->model('m_directivo');
		$this->load->model('m_persona');
	}
	
	//Esto metodo no se puede llamar con ajax
	//Este metodo crea un destinatario a una notificacion en el formulario CREAR NOTIFICACION. La respuesta se muestra en un select dentro del formulario para crear notificaciones
	function agregarEtapa1($hash=null, $tipoDestinatario=null, $idDestinatario=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor') == '1')){	   
			//Segunda comprobacion: Que se haya pasado por post el hash, el tipo de destinatario, el id del destinataro a crear.
			if($hash != "" && strlen($hash) == 20 && is_numeric($tipoDestinatario) && $tipoDestinatario>0 && $tipoDestinatario<=25 && is_numeric($idDestinatario) && $idDestinatario>0){		
				//Cargo el modelo donde estan los datos de los destinatarios de una notificacion
				$this->load->model('m_destinatarioxnotificacion');
				
				//Creamos el destinatario con estado -2, es decir, parcialmente creado
				$resultado = $this->m_destinatarioxnotificacion->crearEtapa1($hash, $tipoDestinatario, $idDestinatario, -2, $this->session->userdata('idUsuarioLog'));
					
				//Busco todos los destinatarios activos
				$listadoDestinatarios = $this->m_destinatarioxnotificacion->buscarActivosEtapa1(" AND destinatarioxnotificacion.hash='".$hash."'");
					
				//Le paso el listado de todos los destinatarios la vista para que las muestre en un combo
				$datos['destinatarios'] = $listadoDestinatarios;
					
				//Cargo la vista donde se arma el combo
				$this->load->view('v_destinatariosxnotificacion_select',$datos);				
			} else {
				//No se han pasado los parametros minimos necesarios para crear un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
		}
	}
	
	//Este metodo solo se puede llamar con ajax
	//Sirve para eliminar el destinatario pasado por la url en el formulario CREAR NOTIFICACION
	//El primer parametro sirve para filtrar los destinatarios en el resultado
	function eliminarEtapa1($hash=null, $idDxN=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor') == '1')){
			//Segunda comprobacion: Que hash pasado sea alfanumerico y de 20 caracteres de longitud. Ademas que idDxN pasado sea numerico y mayor que cero.
			if($hash != "" && strlen($hash) == 20 && is_numeric($idDxN) && $idDxN>0){
				//Cargo el modelo donde estan los datos de las notificaciones
				$this->load->model('m_destinatarioxnotificacion');
				
				//Elimino al destinatario pasada por la url
				$respuesta = $this->m_destinatarioxnotificacion->eliminar($idDxN, $this->session->userdata('idUsuarioLog'));
				
				//Busco todos los destinatarios activos que quedaron
				$listadoDestinatarios = $this->m_destinatarioxnotificacion->buscarActivosEtapa1(" AND destinatarioxnotificacion.hash='".$hash."'");
				
				//Le paso el listado de todos los destinatarios la vista para que las muestre en un combo
				$datos['destinatarios'] = $listadoDestinatarios;
				
				//Cargo la vista donde se arma el combo
				$this->load->view('v_destinatariosxnotificacion_select',$datos);				
			} else {
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				echo("No se ha pasado los parametros necesarios para borrar un registro.");
			}			
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			echo("No tiene permiso para borrar un registro.");
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Este metodo crea un destinatario a una notificacion en el formulario MODIFICAR NOTIFICACION. La respuesta se muestra en un select dentro del formulario para crear notificaciones
	function agregarEtapa2($idNotificacion=null, $tipoDestinatario=null, $idDestinatario=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor') == '1')){	   
			//Segunda comprobacion: Que se haya pasado por post el id de la notificacion, el tipo de destinatario y el id del destinataro a crear.
			if(is_numeric($idNotificacion) && $idNotificacion>0 && is_numeric($tipoDestinatario) && $tipoDestinatario>0 && $tipoDestinatario<=25 && is_numeric($idDestinatario) && $idDestinatario>0){
				//Cargo el modelo donde estan los datos de las notificaciones
				$this->load->model('m_notificacion');
				
				//Busco a la notificacion para comprobar que existe
				$notificacion = $this->m_notificacion->get($idNotificacion);
										
				//Tercera comprobacion: Que la notificacion pasada por la url sea existente.
				if($notificacion->num_rows() == 1){
					//Cargo el modelo donde estan los datos de los destinatarios de una notificacion
					$this->load->model('m_destinatarioxnotificacion');
					
					//Creamos el destinatario
					$resultado = $this->m_destinatarioxnotificacion->crearEtapa2($idNotificacion, $tipoDestinatario, $idDestinatario, 1, $this->session->userdata('idUsuarioLog'));
					
					//Cargo el modelo donde estan los datos del timeline para cargar la novedad.
					$this->load->model('m_timeline');
					
					//Creamos el registro de la novedad. TipoOperacion, idTablaOrigen, idRegistroOrigen, idTablaDestino, idRegistroDestino, fechaPasada, fechaFutura, estado
					$this->m_timeline->crear(2, 7, $idNotificacion, $tipoDestinatario, $idDestinatario, date("Y-m-d H:i:s"), null, 1);
					
					//Busco todos los destinatarios activos
					$listadoDestinatarios = $this->m_destinatarioxnotificacion->buscarActivosEtapa2(" AND notificacion.idNotificacion=".$idNotificacion);
					
					//Le paso el listado de todos los destinatarios la vista para que las muestre en un combo
					$datos['destinatarios'] = $listadoDestinatarios;
					
					//Cargo la vista donde se arma el combo
					$this->load->view('v_destinatariosxnotificacion_select',$datos);
				} else {
					//Los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
				}
			} else {
				//No se han pasado los parametros minimos necesarios para crear un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
		}
	}
	
	//Este metodo solo se puede llamar con ajax
	//Sirve para eliminar el destinatario pasado por la url en el formulario MODIFICAR NOTIFICACION
	//El primer parametro indica el parametro para filtrar los destinatarios en el resultado
	function eliminarEtapa2($idNotificacion=null, $idDxN=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor') == '1')){
			//Segunda comprobacion: Que idNotificacion pasado sea numerico y mayor que cero. Ademas que idDxN pasado sea numerico y mayor que cero.
			if(is_numeric($idNotificacion) && $idNotificacion>0 && is_numeric($idDxN) && $idDxN>0){
				//Cargo el modelo donde estan los datos de las notificaciones
				$this->load->model('m_notificacion');
				
				//Busco a la notificacion para comprobar que exista
				$notificacion = $this->m_notificacion->get($idNotificacion);
				
				//Cargo el modelo donde estan los datos de los destinatarios de notificaciones
				$this->load->model('m_destinatarioxnotificacion');
				
				//Busco al destinatario para comprobar que exista
				$destinatario = $this->m_destinatarioxnotificacion->get($idDxN);
				
				//Tercera comprobacion: Que la notificacion y el destinatario sean existentes
				if($notificacion->num_rows() == 1 && $destinatario->num_rows() == 1){
					//Cargo el modelo donde estan los datos de las notificaciones
					$this->load->model('m_destinatarioxnotificacion');
					
					//Elimino al destinatario pasada por la url
					$respuesta = $this->m_destinatarioxnotificacion->eliminar($idDxN, $this->session->userdata('idUsuarioLog'));
					
					//Cargo el modelo donde estan los datos del timeline para ELIMINAR la novedad.
					$this->load->model('m_timeline');
					
					//Eliminamos el registro de la novedad.  idTablaDestino, idRegistroDestino,
					$this->m_timeline->eliminar2($destinatario->row()->tipoDestinatario, $destinatario->row()->idDestinatario);
					
					//Busco todos los destinatarios activos que quedaron
					$listadoDestinatarios = $this->m_destinatarioxnotificacion->buscarActivosEtapa2(" AND notificacion.idNotificacion=".$idNotificacion);
					
					//Le paso el listado de todos los destinatarios la vista para que las muestre en un combo
					$datos['destinatarios'] = $listadoDestinatarios;
					
					//Cargo la vista donde se arma el combo
					$this->load->view('v_destinatariosxnotificacion_select',$datos);
				} else {
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					echo("No existe el registro seleccionado para borrar.");
				}
			} else {
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				echo("No se ha pasado los parametros necesarios para borrar un registro.");
			}			
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			echo("No tiene permiso para borrar un registro.");
		}
	}
}